(0) Obligation:

JBC Problem based on JBC Program:
Manifest-Version: 1.0 Created-By: 1.6.0_22 (Sun Microsystems Inc.) Main-Class: Shuffle/Shuffle
package Shuffle;

public class List {

int value;
List next;

public List() {}

public List(int value, List next) {
this.value = value;
this.next = next;
}

public static List copy(List x) {
if (x == null) return null;
else return new List(x.value,copy(x.next));
}
}


package Shuffle;
public class Random {
static String[] args;
static int index = 0;

public static int random() {
final String string = args[index];
index++;
return string.length();
}
}


package Shuffle;
public class Shuffle {

// from Walther (1994)
public static List reverse(final List l) {
if (l == null || l.next==null) return l;
final List nextItem = l.next;
final List reverseRest = reverse(nextItem);
l.next = null;
nextItem.next = l;
return reverseRest;
}

public static List shuffle(List xs) {
if (xs == null) {
return null;
} else {
List next = xs.next;
// xs.next = null;
return new List(xs.value, shuffle(reverse(next)));
}
}

public static void main(String[] args) {
Random.args = args;

List xs = createList(Random.random());
List ys = shuffle(xs);
}

public static List createList(int l) {
if (l <= 0) {
return null;
} else {
return new List(Random.random(), createList(l-1));
}
}
}


(1) JBC2FIG (SOUND transformation)

Constructed FIGraph.

(2) Obligation:

FIGraph based on JBC Program:
Shuffle.Shuffle.main([Ljava/lang/String;)V: Graph of 121 nodes with 0 SCCs.

Shuffle.Shuffle.createList(I)LShuffle/List;: Graph of 117 nodes with 0 SCCs.

Shuffle.Shuffle.shuffle(LShuffle/List;)LShuffle/List;: Graph of 79 nodes with 0 SCCs.

Shuffle.Shuffle.reverse(LShuffle/List;)LShuffle/List;: Graph of 51 nodes with 0 SCCs.


(3) FIGtoITRSProof (SOUND transformation)

Transformed FIGraph SCCs to IDPs. Logs:


Log for SCC 0:

Generated 16 rules for P and 34 rules for R.


Combined rules. Obtained 1 rules for P and 6 rules for R.


Filtered ground terms:


Shuffle.List(x1, x2) → Shuffle.List(x2)
1248_0_reverse_NULL(x1, x2, x3) → 1248_0_reverse_NULL(x2, x3)
1820_0_reverse_Return(x1, x2) → 1820_0_reverse_Return(x2)
1751_0_reverse_FieldAccess(x1, x2, x3, x4) → 1751_0_reverse_FieldAccess(x2)
1387_0_reverse_Return(x1, x2) → 1387_0_reverse_Return
1321_0_reverse_Return(x1, x2, x3) → 1321_0_reverse_Return
1270_0_reverse_Return(x1, x2, x3) → 1270_0_reverse_Return

Filtered duplicate args:


1346_1_reverse_InvokeMethod(x1, x2, x3, x4) → 1346_1_reverse_InvokeMethod(x1, x2, x4)
1248_0_reverse_NULL(x1, x2) → 1248_0_reverse_NULL(x2)

Finished conversion. Obtained 1 rules for P and 6 rules for R. System has no predefined symbols.




Log for SCC 1:

Generated 31 rules for P and 103 rules for R.


Combined rules. Obtained 5 rules for P and 18 rules for R.


Filtered ground terms:


1599_1_shuffle_InvokeMethod(x1, x2, x3, x4, x5) → 1599_1_shuffle_InvokeMethod(x1, x4, x5)
Shuffle.List(x1, x2, x3) → Shuffle.List(x2, x3)
1110_0_shuffle_NONNULL(x1, x2, x3) → 1110_0_shuffle_NONNULL(x2, x3)
1235_1_shuffle_InvokeMethod(x1, x2, x3, x4, x5) → 1235_1_shuffle_InvokeMethod(x1, x4, x5)
1820_0_reverse_Return(x1, x2) → 1820_0_reverse_Return(x2)
1387_0_reverse_Return(x1, x2) → 1387_0_reverse_Return(x2)
1338_1_shuffle_InvokeMethod(x1, x2, x3, x4, x5) → 1338_1_shuffle_InvokeMethod(x1, x4, x5)
1321_0_reverse_Return(x1, x2, x3) → 1321_0_reverse_Return(x2, x3)
1270_0_reverse_Return(x1, x2, x3) → 1270_0_reverse_Return
1235_0_reverse_Load(x1, x2) → 1235_0_reverse_Load(x2)
1353_0_reverse_Return(x1, x2, x3) → 1353_0_reverse_Return
1346_0_reverse_Load(x1, x2) → 1346_0_reverse_Load(x2)
1751_0_reverse_FieldAccess(x1, x2, x3, x4) → 1751_0_reverse_FieldAccess(x2, x3, x4)
1248_0_reverse_NULL(x1, x2, x3) → 1248_0_reverse_NULL(x2, x3)
2159_0_shuffle_Return(x1, x2) → 2159_0_shuffle_Return(x2)
2148_0_shuffle_Return(x1, x2) → 2148_0_shuffle_Return(x2)
1398_0_shuffle_Return(x1, x2) → 1398_0_shuffle_Return(x2)
1134_0_shuffle_Return(x1, x2, x3) → 1134_0_shuffle_Return

Filtered duplicate args:


1110_0_shuffle_NONNULL(x1, x2) → 1110_0_shuffle_NONNULL(x2)
1321_0_reverse_Return(x1, x2) → 1321_0_reverse_Return(x2)
1346_1_reverse_InvokeMethod(x1, x2, x3, x4) → 1346_1_reverse_InvokeMethod(x1, x2, x4)
1248_0_reverse_NULL(x1, x2) → 1248_0_reverse_NULL(x2)

Filtered unneeded arguments:


1235_1_shuffle_InvokeMethod(x1, x2, x3) → 1235_1_shuffle_InvokeMethod(x1, x3)
1338_1_shuffle_InvokeMethod(x1, x2, x3) → 1338_1_shuffle_InvokeMethod(x1, x3)
1599_1_shuffle_InvokeMethod(x1, x2, x3) → 1599_1_shuffle_InvokeMethod(x1, x3)

Filtered all free variables:


1398_0_shuffle_Return(x1) → 1398_0_shuffle_Return
2148_0_shuffle_Return(x1) → 2148_0_shuffle_Return
2159_0_shuffle_Return(x1) → 2159_0_shuffle_Return
1751_0_reverse_FieldAccess(x1, x2, x3) → 1751_0_reverse_FieldAccess(x1, x3)

Finished conversion. Obtained 5 rules for P and 18 rules for R. System has no predefined symbols.




Log for SCC 2:

Generated 29 rules for P and 85 rules for R.


Combined rules. Obtained 2 rules for P and 6 rules for R.


Filtered ground terms:


851_1_createList_InvokeMethod(x1, x2, x3, x4, x5) → 851_1_createList_InvokeMethod(x1, x4, x5)
Shuffle.List(x1) → Shuffle.List
745_0_random_ArrayAccess(x1, x2, x3) → 745_0_random_ArrayAccess(x2, x3)
745_1_createList_InvokeMethod(x1, x2, x3, x4) → 745_1_createList_InvokeMethod(x1, x2)
Cond_760_1_createList_InvokeMethod(x1, x2, x3, x4, x5) → Cond_760_1_createList_InvokeMethod(x1, x2, x3)
760_0_random_IntArithmetic(x1, x2, x3, x4) → 760_0_random_IntArithmetic(x2, x3)
760_1_createList_InvokeMethod(x1, x2, x3, x4) → 760_1_createList_InvokeMethod(x1, x2)
Cond_745_1_createList_InvokeMethod(x1, x2, x3, x4, x5) → Cond_745_1_createList_InvokeMethod(x1, x2, x3)
1292_0_createList_Return(x1, x2) → 1292_0_createList_Return
1051_0_createList_InvokeMethod(x1, x2, x3, x4, x5, x6) → 1051_0_createList_InvokeMethod(x2, x5, x6)
java.lang.NullPointerException(x1) → java.lang.NullPointerException
1005_0_createList_InvokeMethod(x1, x2, x3, x4, x5) → 1005_0_createList_InvokeMethod(x3)
999_0_createList_Return(x1, x2) → 999_0_createList_Return
java.lang.ArrayIndexOutOfBoundsException(x1) → java.lang.ArrayIndexOutOfBoundsException
java.lang.IndexOutOfBoundsException(x1) → java.lang.IndexOutOfBoundsException
923_0_createList_InvokeMethod(x1, x2, x3, x4, x5) → 923_0_createList_InvokeMethod(x3)
727_0_createList_Return(x1, x2, x3) → 727_0_createList_Return

Filtered unneeded arguments:


851_1_createList_InvokeMethod(x1, x2, x3) → 851_1_createList_InvokeMethod(x1, x3)

Filtered all non-integer terms:


760_0_random_IntArithmetic(x1, x2) → 760_0_random_IntArithmetic(x2)
1051_0_createList_InvokeMethod(x1, x2, x3) → 1051_0_createList_InvokeMethod(x2, x3)

Combined rules. Obtained 2 rules for P and 6 rules for R.


Finished conversion. Obtained 2 rules for P and 6 rules for R. System has predefined symbols.


(4) Complex Obligation (AND)

(5) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


The ITRS R consists of the following rules:
1248_0_reverse_NULL(NULL) → 1270_0_reverse_Return
1346_1_reverse_InvokeMethod(1321_0_reverse_Return, java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL)))), java.lang.Object(Shuffle.List(NULL))) → 1387_0_reverse_Return
1346_1_reverse_InvokeMethod(1387_0_reverse_Return, java.lang.Object(Shuffle.List(java.lang.Object(x0))), java.lang.Object(x0)) → 1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL)))))
1346_1_reverse_InvokeMethod(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0)))), java.lang.Object(Shuffle.List(java.lang.Object(x1))), java.lang.Object(x1)) → 1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0))))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0)))) → 1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0))))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL))))) → 1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL)))))))

The integer pair graph contains the following rules and edges:
(0): 1248_0_REVERSE_NULL(java.lang.Object(Shuffle.List(java.lang.Object(x0[0])))) → 1248_0_REVERSE_NULL(java.lang.Object(x0[0]))

(0) -> (0), if ((java.lang.Object(x0[0]) →* java.lang.Object(Shuffle.List(java.lang.Object(x0[0]')))))



The set Q consists of the following terms:
1248_0_reverse_NULL(NULL)
1346_1_reverse_InvokeMethod(1321_0_reverse_Return, java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL)))), java.lang.Object(Shuffle.List(NULL)))
1346_1_reverse_InvokeMethod(1387_0_reverse_Return, java.lang.Object(Shuffle.List(java.lang.Object(x0))), java.lang.Object(x0))
1346_1_reverse_InvokeMethod(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0)))), java.lang.Object(Shuffle.List(java.lang.Object(x1))), java.lang.Object(x1))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0))))

(6) IDPtoQDPProof (SOUND transformation)

Represented integers and predefined function symbols by Terms

(7) Obligation:

Q DP problem:
The TRS P consists of the following rules:

1248_0_REVERSE_NULL(java.lang.Object(Shuffle.List(java.lang.Object(x0[0])))) → 1248_0_REVERSE_NULL(java.lang.Object(x0[0]))

The TRS R consists of the following rules:

1248_0_reverse_NULL(NULL) → 1270_0_reverse_Return
1346_1_reverse_InvokeMethod(1321_0_reverse_Return, java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL)))), java.lang.Object(Shuffle.List(NULL))) → 1387_0_reverse_Return
1346_1_reverse_InvokeMethod(1387_0_reverse_Return, java.lang.Object(Shuffle.List(java.lang.Object(x0))), java.lang.Object(x0)) → 1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL)))))
1346_1_reverse_InvokeMethod(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0)))), java.lang.Object(Shuffle.List(java.lang.Object(x1))), java.lang.Object(x1)) → 1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0))))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0)))) → 1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0))))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL))))) → 1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL)))))))

The set Q consists of the following terms:

1248_0_reverse_NULL(NULL)
1346_1_reverse_InvokeMethod(1321_0_reverse_Return, java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL)))), java.lang.Object(Shuffle.List(NULL)))
1346_1_reverse_InvokeMethod(1387_0_reverse_Return, java.lang.Object(Shuffle.List(java.lang.Object(x0))), java.lang.Object(x0))
1346_1_reverse_InvokeMethod(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0)))), java.lang.Object(Shuffle.List(java.lang.Object(x1))), java.lang.Object(x1))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0))))

We have to consider all minimal (P,Q,R)-chains.

(8) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(9) Obligation:

Q DP problem:
The TRS P consists of the following rules:

1248_0_REVERSE_NULL(java.lang.Object(Shuffle.List(java.lang.Object(x0[0])))) → 1248_0_REVERSE_NULL(java.lang.Object(x0[0]))

R is empty.
The set Q consists of the following terms:

1248_0_reverse_NULL(NULL)
1346_1_reverse_InvokeMethod(1321_0_reverse_Return, java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL)))), java.lang.Object(Shuffle.List(NULL)))
1346_1_reverse_InvokeMethod(1387_0_reverse_Return, java.lang.Object(Shuffle.List(java.lang.Object(x0))), java.lang.Object(x0))
1346_1_reverse_InvokeMethod(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0)))), java.lang.Object(Shuffle.List(java.lang.Object(x1))), java.lang.Object(x1))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0))))

We have to consider all minimal (P,Q,R)-chains.

(10) QReductionProof (EQUIVALENT transformation)

We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].

1248_0_reverse_NULL(NULL)
1346_1_reverse_InvokeMethod(1321_0_reverse_Return, java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL)))), java.lang.Object(Shuffle.List(NULL)))
1346_1_reverse_InvokeMethod(1387_0_reverse_Return, java.lang.Object(Shuffle.List(java.lang.Object(x0))), java.lang.Object(x0))
1346_1_reverse_InvokeMethod(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0)))), java.lang.Object(Shuffle.List(java.lang.Object(x1))), java.lang.Object(x1))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0))))

(11) Obligation:

Q DP problem:
The TRS P consists of the following rules:

1248_0_REVERSE_NULL(java.lang.Object(Shuffle.List(java.lang.Object(x0[0])))) → 1248_0_REVERSE_NULL(java.lang.Object(x0[0]))

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.

(12) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • 1248_0_REVERSE_NULL(java.lang.Object(Shuffle.List(java.lang.Object(x0[0])))) → 1248_0_REVERSE_NULL(java.lang.Object(x0[0]))
    The graph contains the following edges 1 > 1

(13) YES

(14) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:
none


The ITRS R consists of the following rules:
1110_0_shuffle_NONNULL(NULL) → 1134_0_shuffle_Return
1235_0_reverse_Load(x0) → 1248_0_reverse_NULL(x0)
1338_1_shuffle_InvokeMethod(1134_0_shuffle_Return, NULL) → 1398_0_shuffle_Return
1338_1_shuffle_InvokeMethod(1398_0_shuffle_Return, java.lang.Object(Shuffle.List(NULL, x0))) → 2148_0_shuffle_Return
1338_1_shuffle_InvokeMethod(2148_0_shuffle_Return, x6) → 2148_0_shuffle_Return
1338_1_shuffle_InvokeMethod(2159_0_shuffle_Return, x7) → 2148_0_shuffle_Return
1599_1_shuffle_InvokeMethod(2148_0_shuffle_Return, java.lang.Object(Shuffle.List(java.lang.Object(x6), x7))) → 2159_0_shuffle_Return
1599_1_shuffle_InvokeMethod(2159_0_shuffle_Return, java.lang.Object(Shuffle.List(java.lang.Object(x7), x8))) → 2159_0_shuffle_Return
1248_0_reverse_NULL(NULL) → 1270_0_reverse_Return
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(NULL, x0))) → 1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0)))
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1))) → 1346_1_reverse_InvokeMethod(1346_0_reverse_Load(java.lang.Object(x0)), java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(x0))
1346_0_reverse_Load(java.lang.Object(x0)) → 1248_0_reverse_NULL(java.lang.Object(x0))
1346_1_reverse_InvokeMethod(1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2)) → 1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x3)))
1346_1_reverse_InvokeMethod(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2)) → 1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(Shuffle.List(NULL, x3)))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(Shuffle.List(NULL, x3))) → 1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x2))) → 1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x2)), x0)), x1)))
1346_1_reverse_InvokeMethod(1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0))), java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x0))) → 1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x1)), x0)))
1346_0_reverse_Load(NULL) → 1353_0_reverse_Return

The integer pair graph contains the following rules and edges:
(0): 1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(x0[0], x1[0]))) → 1235_1_SHUFFLE_INVOKEMETHOD(1235_0_reverse_Load(x0[0]), x0[0])
(1): 1235_1_SHUFFLE_INVOKEMETHOD(1270_0_reverse_Return, NULL) → 1110_0_SHUFFLE_NONNULL(NULL)
(2): 1235_1_SHUFFLE_INVOKEMETHOD(1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0[2]))), java.lang.Object(Shuffle.List(NULL, x0[2]))) → 1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(NULL, x0[2])))
(3): 1235_1_SHUFFLE_INVOKEMETHOD(1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0[3])), x1[3]))), x5[3]) → 1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0[3])), x1[3])))
(4): 1235_1_SHUFFLE_INVOKEMETHOD(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0[4]), x1[4]))), x5[4]) → 1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(java.lang.Object(x0[4]), x1[4])))

(0) -> (1), if ((1235_0_reverse_Load(x0[0]) →* 1270_0_reverse_Return)∧(x0[0]* NULL))


(0) -> (2), if ((1235_0_reverse_Load(x0[0]) →* 1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0[2]))))∧(x0[0]* java.lang.Object(Shuffle.List(NULL, x0[2]))))


(0) -> (3), if ((1235_0_reverse_Load(x0[0]) →* 1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0[3])), x1[3]))))∧(x0[0]* x5[3]))


(0) -> (4), if ((1235_0_reverse_Load(x0[0]) →* 1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0[4]), x1[4]))))∧(x0[0]* x5[4]))


(1) -> (0), if ((NULL* java.lang.Object(Shuffle.List(x0[0], x1[0]))))


(2) -> (0), if ((java.lang.Object(Shuffle.List(NULL, x0[2])) →* java.lang.Object(Shuffle.List(x0[0], x1[0]))))


(3) -> (0), if ((java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0[3])), x1[3])) →* java.lang.Object(Shuffle.List(x0[0], x1[0]))))


(4) -> (0), if ((java.lang.Object(Shuffle.List(java.lang.Object(x0[4]), x1[4])) →* java.lang.Object(Shuffle.List(x0[0], x1[0]))))



The set Q consists of the following terms:
1110_0_shuffle_NONNULL(NULL)
1235_0_reverse_Load(x0)
1338_1_shuffle_InvokeMethod(1134_0_shuffle_Return, NULL)
1338_1_shuffle_InvokeMethod(1398_0_shuffle_Return, java.lang.Object(Shuffle.List(NULL, x0)))
1338_1_shuffle_InvokeMethod(2148_0_shuffle_Return, x0)
1338_1_shuffle_InvokeMethod(2159_0_shuffle_Return, x0)
1599_1_shuffle_InvokeMethod(2148_0_shuffle_Return, java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1599_1_shuffle_InvokeMethod(2159_0_shuffle_Return, java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1248_0_reverse_NULL(NULL)
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(NULL, x0)))
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1346_0_reverse_Load(java.lang.Object(x0))
1346_1_reverse_InvokeMethod(1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2))
1346_1_reverse_InvokeMethod(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(Shuffle.List(NULL, x2)))
1346_1_reverse_InvokeMethod(1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0))), java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x0)))
1346_0_reverse_Load(NULL)

(15) IDPtoQDPProof (SOUND transformation)

Represented integers and predefined function symbols by Terms

(16) Obligation:

Q DP problem:
The TRS P consists of the following rules:

1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(x0[0], x1[0]))) → 1235_1_SHUFFLE_INVOKEMETHOD(1235_0_reverse_Load(x0[0]), x0[0])
1235_1_SHUFFLE_INVOKEMETHOD(1270_0_reverse_Return, NULL) → 1110_0_SHUFFLE_NONNULL(NULL)
1235_1_SHUFFLE_INVOKEMETHOD(1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0[2]))), java.lang.Object(Shuffle.List(NULL, x0[2]))) → 1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(NULL, x0[2])))
1235_1_SHUFFLE_INVOKEMETHOD(1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0[3])), x1[3]))), x5[3]) → 1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0[3])), x1[3])))
1235_1_SHUFFLE_INVOKEMETHOD(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0[4]), x1[4]))), x5[4]) → 1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(java.lang.Object(x0[4]), x1[4])))

The TRS R consists of the following rules:

1110_0_shuffle_NONNULL(NULL) → 1134_0_shuffle_Return
1235_0_reverse_Load(x0) → 1248_0_reverse_NULL(x0)
1338_1_shuffle_InvokeMethod(1134_0_shuffle_Return, NULL) → 1398_0_shuffle_Return
1338_1_shuffle_InvokeMethod(1398_0_shuffle_Return, java.lang.Object(Shuffle.List(NULL, x0))) → 2148_0_shuffle_Return
1338_1_shuffle_InvokeMethod(2148_0_shuffle_Return, x6) → 2148_0_shuffle_Return
1338_1_shuffle_InvokeMethod(2159_0_shuffle_Return, x7) → 2148_0_shuffle_Return
1599_1_shuffle_InvokeMethod(2148_0_shuffle_Return, java.lang.Object(Shuffle.List(java.lang.Object(x6), x7))) → 2159_0_shuffle_Return
1599_1_shuffle_InvokeMethod(2159_0_shuffle_Return, java.lang.Object(Shuffle.List(java.lang.Object(x7), x8))) → 2159_0_shuffle_Return
1248_0_reverse_NULL(NULL) → 1270_0_reverse_Return
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(NULL, x0))) → 1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0)))
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1))) → 1346_1_reverse_InvokeMethod(1346_0_reverse_Load(java.lang.Object(x0)), java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(x0))
1346_0_reverse_Load(java.lang.Object(x0)) → 1248_0_reverse_NULL(java.lang.Object(x0))
1346_1_reverse_InvokeMethod(1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2)) → 1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x3)))
1346_1_reverse_InvokeMethod(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2)) → 1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(Shuffle.List(NULL, x3)))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(Shuffle.List(NULL, x3))) → 1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x2))) → 1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x2)), x0)), x1)))
1346_1_reverse_InvokeMethod(1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0))), java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x0))) → 1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x1)), x0)))
1346_0_reverse_Load(NULL) → 1353_0_reverse_Return

The set Q consists of the following terms:

1110_0_shuffle_NONNULL(NULL)
1235_0_reverse_Load(x0)
1338_1_shuffle_InvokeMethod(1134_0_shuffle_Return, NULL)
1338_1_shuffle_InvokeMethod(1398_0_shuffle_Return, java.lang.Object(Shuffle.List(NULL, x0)))
1338_1_shuffle_InvokeMethod(2148_0_shuffle_Return, x0)
1338_1_shuffle_InvokeMethod(2159_0_shuffle_Return, x0)
1599_1_shuffle_InvokeMethod(2148_0_shuffle_Return, java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1599_1_shuffle_InvokeMethod(2159_0_shuffle_Return, java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1248_0_reverse_NULL(NULL)
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(NULL, x0)))
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1346_0_reverse_Load(java.lang.Object(x0))
1346_1_reverse_InvokeMethod(1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2))
1346_1_reverse_InvokeMethod(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(Shuffle.List(NULL, x2)))
1346_1_reverse_InvokeMethod(1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0))), java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x0)))
1346_0_reverse_Load(NULL)

We have to consider all minimal (P,Q,R)-chains.

(17) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.

(18) Obligation:

Q DP problem:
The TRS P consists of the following rules:

1235_1_SHUFFLE_INVOKEMETHOD(1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0[2]))), java.lang.Object(Shuffle.List(NULL, x0[2]))) → 1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(NULL, x0[2])))
1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(x0[0], x1[0]))) → 1235_1_SHUFFLE_INVOKEMETHOD(1235_0_reverse_Load(x0[0]), x0[0])
1235_1_SHUFFLE_INVOKEMETHOD(1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0[3])), x1[3]))), x5[3]) → 1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0[3])), x1[3])))
1235_1_SHUFFLE_INVOKEMETHOD(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0[4]), x1[4]))), x5[4]) → 1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(java.lang.Object(x0[4]), x1[4])))

The TRS R consists of the following rules:

1110_0_shuffle_NONNULL(NULL) → 1134_0_shuffle_Return
1235_0_reverse_Load(x0) → 1248_0_reverse_NULL(x0)
1338_1_shuffle_InvokeMethod(1134_0_shuffle_Return, NULL) → 1398_0_shuffle_Return
1338_1_shuffle_InvokeMethod(1398_0_shuffle_Return, java.lang.Object(Shuffle.List(NULL, x0))) → 2148_0_shuffle_Return
1338_1_shuffle_InvokeMethod(2148_0_shuffle_Return, x6) → 2148_0_shuffle_Return
1338_1_shuffle_InvokeMethod(2159_0_shuffle_Return, x7) → 2148_0_shuffle_Return
1599_1_shuffle_InvokeMethod(2148_0_shuffle_Return, java.lang.Object(Shuffle.List(java.lang.Object(x6), x7))) → 2159_0_shuffle_Return
1599_1_shuffle_InvokeMethod(2159_0_shuffle_Return, java.lang.Object(Shuffle.List(java.lang.Object(x7), x8))) → 2159_0_shuffle_Return
1248_0_reverse_NULL(NULL) → 1270_0_reverse_Return
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(NULL, x0))) → 1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0)))
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1))) → 1346_1_reverse_InvokeMethod(1346_0_reverse_Load(java.lang.Object(x0)), java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(x0))
1346_0_reverse_Load(java.lang.Object(x0)) → 1248_0_reverse_NULL(java.lang.Object(x0))
1346_1_reverse_InvokeMethod(1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2)) → 1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x3)))
1346_1_reverse_InvokeMethod(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2)) → 1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(Shuffle.List(NULL, x3)))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(Shuffle.List(NULL, x3))) → 1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x2))) → 1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x2)), x0)), x1)))
1346_1_reverse_InvokeMethod(1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0))), java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x0))) → 1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x1)), x0)))
1346_0_reverse_Load(NULL) → 1353_0_reverse_Return

The set Q consists of the following terms:

1110_0_shuffle_NONNULL(NULL)
1235_0_reverse_Load(x0)
1338_1_shuffle_InvokeMethod(1134_0_shuffle_Return, NULL)
1338_1_shuffle_InvokeMethod(1398_0_shuffle_Return, java.lang.Object(Shuffle.List(NULL, x0)))
1338_1_shuffle_InvokeMethod(2148_0_shuffle_Return, x0)
1338_1_shuffle_InvokeMethod(2159_0_shuffle_Return, x0)
1599_1_shuffle_InvokeMethod(2148_0_shuffle_Return, java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1599_1_shuffle_InvokeMethod(2159_0_shuffle_Return, java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1248_0_reverse_NULL(NULL)
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(NULL, x0)))
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1346_0_reverse_Load(java.lang.Object(x0))
1346_1_reverse_InvokeMethod(1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2))
1346_1_reverse_InvokeMethod(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(Shuffle.List(NULL, x2)))
1346_1_reverse_InvokeMethod(1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0))), java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x0)))
1346_0_reverse_Load(NULL)

We have to consider all minimal (P,Q,R)-chains.

(19) UsableRulesProof (EQUIVALENT transformation)

As all Q-normal forms are R-normal forms we are in the innermost case. Hence, by the usable rules processor [LPAR04] we can delete all non-usable rules [FROCOS05] from R.

(20) Obligation:

Q DP problem:
The TRS P consists of the following rules:

1235_1_SHUFFLE_INVOKEMETHOD(1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0[2]))), java.lang.Object(Shuffle.List(NULL, x0[2]))) → 1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(NULL, x0[2])))
1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(x0[0], x1[0]))) → 1235_1_SHUFFLE_INVOKEMETHOD(1235_0_reverse_Load(x0[0]), x0[0])
1235_1_SHUFFLE_INVOKEMETHOD(1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0[3])), x1[3]))), x5[3]) → 1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0[3])), x1[3])))
1235_1_SHUFFLE_INVOKEMETHOD(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0[4]), x1[4]))), x5[4]) → 1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(java.lang.Object(x0[4]), x1[4])))

The TRS R consists of the following rules:

1235_0_reverse_Load(x0) → 1248_0_reverse_NULL(x0)
1248_0_reverse_NULL(NULL) → 1270_0_reverse_Return
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(NULL, x0))) → 1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0)))
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1))) → 1346_1_reverse_InvokeMethod(1346_0_reverse_Load(java.lang.Object(x0)), java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(x0))
1346_0_reverse_Load(java.lang.Object(x0)) → 1248_0_reverse_NULL(java.lang.Object(x0))
1346_1_reverse_InvokeMethod(1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2)) → 1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x3)))
1346_1_reverse_InvokeMethod(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2)) → 1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(Shuffle.List(NULL, x3)))
1346_1_reverse_InvokeMethod(1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0))), java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x0))) → 1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x1)), x0)))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(Shuffle.List(NULL, x3))) → 1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x2))) → 1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x2)), x0)), x1)))

The set Q consists of the following terms:

1110_0_shuffle_NONNULL(NULL)
1235_0_reverse_Load(x0)
1338_1_shuffle_InvokeMethod(1134_0_shuffle_Return, NULL)
1338_1_shuffle_InvokeMethod(1398_0_shuffle_Return, java.lang.Object(Shuffle.List(NULL, x0)))
1338_1_shuffle_InvokeMethod(2148_0_shuffle_Return, x0)
1338_1_shuffle_InvokeMethod(2159_0_shuffle_Return, x0)
1599_1_shuffle_InvokeMethod(2148_0_shuffle_Return, java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1599_1_shuffle_InvokeMethod(2159_0_shuffle_Return, java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1248_0_reverse_NULL(NULL)
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(NULL, x0)))
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1346_0_reverse_Load(java.lang.Object(x0))
1346_1_reverse_InvokeMethod(1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2))
1346_1_reverse_InvokeMethod(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(Shuffle.List(NULL, x2)))
1346_1_reverse_InvokeMethod(1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0))), java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x0)))
1346_0_reverse_Load(NULL)

We have to consider all minimal (P,Q,R)-chains.

(21) QReductionProof (EQUIVALENT transformation)

We deleted the following terms from Q as each root-symbol of these terms does neither occur in P nor in R.[THIEMANN].

1110_0_shuffle_NONNULL(NULL)
1338_1_shuffle_InvokeMethod(1134_0_shuffle_Return, NULL)
1338_1_shuffle_InvokeMethod(1398_0_shuffle_Return, java.lang.Object(Shuffle.List(NULL, x0)))
1338_1_shuffle_InvokeMethod(2148_0_shuffle_Return, x0)
1338_1_shuffle_InvokeMethod(2159_0_shuffle_Return, x0)
1599_1_shuffle_InvokeMethod(2148_0_shuffle_Return, java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1599_1_shuffle_InvokeMethod(2159_0_shuffle_Return, java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))

(22) Obligation:

Q DP problem:
The TRS P consists of the following rules:

1235_1_SHUFFLE_INVOKEMETHOD(1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0[2]))), java.lang.Object(Shuffle.List(NULL, x0[2]))) → 1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(NULL, x0[2])))
1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(x0[0], x1[0]))) → 1235_1_SHUFFLE_INVOKEMETHOD(1235_0_reverse_Load(x0[0]), x0[0])
1235_1_SHUFFLE_INVOKEMETHOD(1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0[3])), x1[3]))), x5[3]) → 1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0[3])), x1[3])))
1235_1_SHUFFLE_INVOKEMETHOD(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0[4]), x1[4]))), x5[4]) → 1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(java.lang.Object(x0[4]), x1[4])))

The TRS R consists of the following rules:

1235_0_reverse_Load(x0) → 1248_0_reverse_NULL(x0)
1248_0_reverse_NULL(NULL) → 1270_0_reverse_Return
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(NULL, x0))) → 1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0)))
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1))) → 1346_1_reverse_InvokeMethod(1346_0_reverse_Load(java.lang.Object(x0)), java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(x0))
1346_0_reverse_Load(java.lang.Object(x0)) → 1248_0_reverse_NULL(java.lang.Object(x0))
1346_1_reverse_InvokeMethod(1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2)) → 1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x3)))
1346_1_reverse_InvokeMethod(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2)) → 1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(Shuffle.List(NULL, x3)))
1346_1_reverse_InvokeMethod(1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0))), java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x0))) → 1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x1)), x0)))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(Shuffle.List(NULL, x3))) → 1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x2))) → 1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x2)), x0)), x1)))

The set Q consists of the following terms:

1235_0_reverse_Load(x0)
1248_0_reverse_NULL(NULL)
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(NULL, x0)))
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1346_0_reverse_Load(java.lang.Object(x0))
1346_1_reverse_InvokeMethod(1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2))
1346_1_reverse_InvokeMethod(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(Shuffle.List(NULL, x2)))
1346_1_reverse_InvokeMethod(1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0))), java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x0)))
1346_0_reverse_Load(NULL)

We have to consider all minimal (P,Q,R)-chains.

(23) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04].


The following pairs can be oriented strictly and are deleted.


1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(x0[0], x1[0]))) → 1235_1_SHUFFLE_INVOKEMETHOD(1235_0_reverse_Load(x0[0]), x0[0])
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:

POL(1110_0_SHUFFLE_NONNULL(x1)) = x1   
POL(1235_0_reverse_Load(x1)) = x1   
POL(1235_1_SHUFFLE_INVOKEMETHOD(x1, x2)) = x1   
POL(1248_0_reverse_NULL(x1)) = x1   
POL(1270_0_reverse_Return) = 0   
POL(1321_0_reverse_Return(x1)) = 1   
POL(1346_0_reverse_Load(x1)) = x1   
POL(1346_1_reverse_InvokeMethod(x1, x2, x3)) = 1 + x1   
POL(1387_0_reverse_Return(x1)) = x1   
POL(1751_0_reverse_FieldAccess(x1, x2)) = 1 + x1   
POL(1820_0_reverse_Return(x1)) = x1   
POL(NULL) = 0   
POL(Shuffle.List(x1, x2)) = 1 + x1   
POL(java.lang.Object(x1)) = x1   

The following usable rules [FROCOS05] were oriented:

1235_0_reverse_Load(x0) → 1248_0_reverse_NULL(x0)
1248_0_reverse_NULL(NULL) → 1270_0_reverse_Return
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(NULL, x0))) → 1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0)))
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1))) → 1346_1_reverse_InvokeMethod(1346_0_reverse_Load(java.lang.Object(x0)), java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(x0))
1346_1_reverse_InvokeMethod(1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2)) → 1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x3)))
1346_1_reverse_InvokeMethod(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2)) → 1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(Shuffle.List(NULL, x3)))
1346_1_reverse_InvokeMethod(1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0))), java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x0))) → 1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x1)), x0)))
1346_0_reverse_Load(java.lang.Object(x0)) → 1248_0_reverse_NULL(java.lang.Object(x0))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(Shuffle.List(NULL, x3))) → 1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x2))) → 1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x2)), x0)), x1)))

(24) Obligation:

Q DP problem:
The TRS P consists of the following rules:

1235_1_SHUFFLE_INVOKEMETHOD(1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0[2]))), java.lang.Object(Shuffle.List(NULL, x0[2]))) → 1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(NULL, x0[2])))
1235_1_SHUFFLE_INVOKEMETHOD(1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0[3])), x1[3]))), x5[3]) → 1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0[3])), x1[3])))
1235_1_SHUFFLE_INVOKEMETHOD(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0[4]), x1[4]))), x5[4]) → 1110_0_SHUFFLE_NONNULL(java.lang.Object(Shuffle.List(java.lang.Object(x0[4]), x1[4])))

The TRS R consists of the following rules:

1235_0_reverse_Load(x0) → 1248_0_reverse_NULL(x0)
1248_0_reverse_NULL(NULL) → 1270_0_reverse_Return
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(NULL, x0))) → 1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0)))
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1))) → 1346_1_reverse_InvokeMethod(1346_0_reverse_Load(java.lang.Object(x0)), java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(x0))
1346_0_reverse_Load(java.lang.Object(x0)) → 1248_0_reverse_NULL(java.lang.Object(x0))
1346_1_reverse_InvokeMethod(1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2)) → 1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x3)))
1346_1_reverse_InvokeMethod(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2)) → 1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(Shuffle.List(NULL, x3)))
1346_1_reverse_InvokeMethod(1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0))), java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x0))) → 1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x1)), x0)))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(Shuffle.List(NULL, x3))) → 1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x2))) → 1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x2)), x0)), x1)))

The set Q consists of the following terms:

1235_0_reverse_Load(x0)
1248_0_reverse_NULL(NULL)
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(NULL, x0)))
1248_0_reverse_NULL(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)))
1346_0_reverse_Load(java.lang.Object(x0))
1346_1_reverse_InvokeMethod(1387_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2))
1346_1_reverse_InvokeMethod(1820_0_reverse_Return(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1))), java.lang.Object(Shuffle.List(java.lang.Object(x2), x3)), java.lang.Object(x2))
1751_0_reverse_FieldAccess(java.lang.Object(Shuffle.List(java.lang.Object(x0), x1)), java.lang.Object(Shuffle.List(NULL, x2)))
1346_1_reverse_InvokeMethod(1321_0_reverse_Return(java.lang.Object(Shuffle.List(NULL, x0))), java.lang.Object(Shuffle.List(java.lang.Object(Shuffle.List(NULL, x0)), x1)), java.lang.Object(Shuffle.List(NULL, x0)))
1346_0_reverse_Load(NULL)

We have to consider all minimal (P,Q,R)-chains.

(25) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 3 less nodes.

(26) TRUE

(27) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Boolean, Integer


The ITRS R consists of the following rules:
851_1_createList_InvokeMethod(727_0_createList_Return, 0) → 999_0_createList_Return
851_1_createList_InvokeMethod(923_0_createList_InvokeMethod(x0), x0) → 1051_0_createList_InvokeMethod(x1, x0)
851_1_createList_InvokeMethod(999_0_createList_Return, x1) → 1292_0_createList_Return
851_1_createList_InvokeMethod(1005_0_createList_InvokeMethod(x0), x0) → 1051_0_createList_InvokeMethod(x1, x0)
851_1_createList_InvokeMethod(1051_0_createList_InvokeMethod(x1, x2), x4) → 1051_0_createList_InvokeMethod(x3, x4)
851_1_createList_InvokeMethod(1292_0_createList_Return, x1) → 1292_0_createList_Return

The integer pair graph contains the following rules and edges:
(0): 745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0]) → COND_745_1_CREATELIST_INVOKEMETHOD(x2[0] >= 1 && x2[0] < x0[0], 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0])
(1): COND_745_1_CREATELIST_INVOKEMETHOD(TRUE, 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[1], x1[1])), x2[1]), x3[1]) → 760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x5[1]), x3[1])
(2): 760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x2[2]), x4[2]) → COND_760_1_CREATELIST_INVOKEMETHOD(x4[2] > 0 && x2[2] > 0 && 0 < x4[2] - 1, 760_0_random_IntArithmetic(x2[2]), x4[2])
(3): COND_760_1_CREATELIST_INVOKEMETHOD(TRUE, 760_0_random_IntArithmetic(x2[3]), x4[3]) → 745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x5[3], x6[3])), x7[3]), x4[3] - 1)

(0) -> (1), if ((x2[0] >= 1 && x2[0] < x0[0]* TRUE)∧(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]) →* 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[1], x1[1])), x2[1]))∧(x3[0]* x3[1]))


(1) -> (2), if ((760_0_random_IntArithmetic(x5[1]) →* 760_0_random_IntArithmetic(x2[2]))∧(x3[1]* x4[2]))


(2) -> (3), if ((x4[2] > 0 && x2[2] > 0 && 0 < x4[2] - 1* TRUE)∧(760_0_random_IntArithmetic(x2[2]) →* 760_0_random_IntArithmetic(x2[3]))∧(x4[2]* x4[3]))


(3) -> (0), if ((745_0_random_ArrayAccess(java.lang.Object(ARRAY(x5[3], x6[3])), x7[3]) →* 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]))∧(x4[3] - 1* x3[0]))



The set Q consists of the following terms:
851_1_createList_InvokeMethod(727_0_createList_Return, 0)
851_1_createList_InvokeMethod(923_0_createList_InvokeMethod(x0), x0)
851_1_createList_InvokeMethod(999_0_createList_Return, x0)
851_1_createList_InvokeMethod(1005_0_createList_InvokeMethod(x0), x0)
851_1_createList_InvokeMethod(1051_0_createList_InvokeMethod(x0, x1), x2)
851_1_createList_InvokeMethod(1292_0_createList_Return, x0)

(28) IDPNonInfProof (SOUND transformation)

The constraints were generated the following way:
The DP Problem is simplified using the Induction Calculus [NONINF] with the following steps:
Note that final constraints are written in bold face.


For Pair 745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0, x1)), x2), x3) → COND_745_1_CREATELIST_INVOKEMETHOD(&&(>=(x2, 1), <(x2, x0)), 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0, x1)), x2), x3) the following chains were created:
  • We consider the chain 745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0]) → COND_745_1_CREATELIST_INVOKEMETHOD(&&(>=(x2[0], 1), <(x2[0], x0[0])), 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0]), COND_745_1_CREATELIST_INVOKEMETHOD(TRUE, 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[1], x1[1])), x2[1]), x3[1]) → 760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x5[1]), x3[1]) which results in the following constraint:

    (1)    (&&(>=(x2[0], 1), <(x2[0], x0[0]))=TRUE745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0])=745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[1], x1[1])), x2[1])∧x3[0]=x3[1]745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0])≥NonInfC∧745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0])≥COND_745_1_CREATELIST_INVOKEMETHOD(&&(>=(x2[0], 1), <(x2[0], x0[0])), 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0])∧(UIncreasing(COND_745_1_CREATELIST_INVOKEMETHOD(&&(>=(x2[0], 1), <(x2[0], x0[0])), 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0])), ≥))



    We simplified constraint (1) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (2)    (>=(x2[0], 1)=TRUE<(x2[0], x0[0])=TRUE745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0])≥NonInfC∧745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0])≥COND_745_1_CREATELIST_INVOKEMETHOD(&&(>=(x2[0], 1), <(x2[0], x0[0])), 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0])∧(UIncreasing(COND_745_1_CREATELIST_INVOKEMETHOD(&&(>=(x2[0], 1), <(x2[0], x0[0])), 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0])), ≥))



    We simplified constraint (2) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (3)    (x2[0] + [-1] ≥ 0∧x0[0] + [-1] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_745_1_CREATELIST_INVOKEMETHOD(&&(>=(x2[0], 1), <(x2[0], x0[0])), 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0])), ≥)∧[(-1)Bound*bni_27] + [(2)bni_27]x3[0] ≥ 0∧[1 + (-1)bso_28] ≥ 0)



    We simplified constraint (3) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (4)    (x2[0] + [-1] ≥ 0∧x0[0] + [-1] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_745_1_CREATELIST_INVOKEMETHOD(&&(>=(x2[0], 1), <(x2[0], x0[0])), 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0])), ≥)∧[(-1)Bound*bni_27] + [(2)bni_27]x3[0] ≥ 0∧[1 + (-1)bso_28] ≥ 0)



    We simplified constraint (4) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (5)    (x2[0] + [-1] ≥ 0∧x0[0] + [-1] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_745_1_CREATELIST_INVOKEMETHOD(&&(>=(x2[0], 1), <(x2[0], x0[0])), 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0])), ≥)∧[(-1)Bound*bni_27] + [(2)bni_27]x3[0] ≥ 0∧[1 + (-1)bso_28] ≥ 0)



    We simplified constraint (5) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (6)    (x2[0] + [-1] ≥ 0∧x0[0] + [-1] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_745_1_CREATELIST_INVOKEMETHOD(&&(>=(x2[0], 1), <(x2[0], x0[0])), 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0])), ≥)∧[(2)bni_27] = 0∧0 = 0∧[(-1)Bound*bni_27] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_28] ≥ 0)



    We simplified constraint (6) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (7)    (x2[0] ≥ 0∧x0[0] + [-2] + [-1]x2[0] ≥ 0 ⇒ (UIncreasing(COND_745_1_CREATELIST_INVOKEMETHOD(&&(>=(x2[0], 1), <(x2[0], x0[0])), 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0])), ≥)∧[(2)bni_27] = 0∧0 = 0∧[(-1)Bound*bni_27] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_28] ≥ 0)



    We simplified constraint (7) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (8)    (x2[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_745_1_CREATELIST_INVOKEMETHOD(&&(>=(x2[0], 1), <(x2[0], x0[0])), 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0])), ≥)∧[(2)bni_27] = 0∧0 = 0∧[(-1)Bound*bni_27] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_28] ≥ 0)







For Pair COND_745_1_CREATELIST_INVOKEMETHOD(TRUE, 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0, x1)), x2), x3) → 760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x5), x3) the following chains were created:
  • We consider the chain COND_745_1_CREATELIST_INVOKEMETHOD(TRUE, 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[1], x1[1])), x2[1]), x3[1]) → 760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x5[1]), x3[1]) which results in the following constraint:

    (9)    (COND_745_1_CREATELIST_INVOKEMETHOD(TRUE, 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[1], x1[1])), x2[1]), x3[1])≥NonInfC∧COND_745_1_CREATELIST_INVOKEMETHOD(TRUE, 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[1], x1[1])), x2[1]), x3[1])≥760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x5[1]), x3[1])∧(UIncreasing(760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x5[1]), x3[1])), ≥))



    We simplified constraint (9) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (10)    ((UIncreasing(760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x5[1]), x3[1])), ≥)∧[(-1)bso_30] ≥ 0)



    We simplified constraint (10) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (11)    ((UIncreasing(760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x5[1]), x3[1])), ≥)∧[(-1)bso_30] ≥ 0)



    We simplified constraint (11) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (12)    ((UIncreasing(760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x5[1]), x3[1])), ≥)∧[(-1)bso_30] ≥ 0)



    We simplified constraint (12) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (13)    ((UIncreasing(760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x5[1]), x3[1])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_30] ≥ 0)







For Pair 760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x2), x4) → COND_760_1_CREATELIST_INVOKEMETHOD(&&(&&(>(x4, 0), >(x2, 0)), <(0, -(x4, 1))), 760_0_random_IntArithmetic(x2), x4) the following chains were created:
  • We consider the chain 760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x2[2]), x4[2]) → COND_760_1_CREATELIST_INVOKEMETHOD(&&(&&(>(x4[2], 0), >(x2[2], 0)), <(0, -(x4[2], 1))), 760_0_random_IntArithmetic(x2[2]), x4[2]), COND_760_1_CREATELIST_INVOKEMETHOD(TRUE, 760_0_random_IntArithmetic(x2[3]), x4[3]) → 745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x5[3], x6[3])), x7[3]), -(x4[3], 1)) which results in the following constraint:

    (14)    (&&(&&(>(x4[2], 0), >(x2[2], 0)), <(0, -(x4[2], 1)))=TRUE760_0_random_IntArithmetic(x2[2])=760_0_random_IntArithmetic(x2[3])∧x4[2]=x4[3]760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x2[2]), x4[2])≥NonInfC∧760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x2[2]), x4[2])≥COND_760_1_CREATELIST_INVOKEMETHOD(&&(&&(>(x4[2], 0), >(x2[2], 0)), <(0, -(x4[2], 1))), 760_0_random_IntArithmetic(x2[2]), x4[2])∧(UIncreasing(COND_760_1_CREATELIST_INVOKEMETHOD(&&(&&(>(x4[2], 0), >(x2[2], 0)), <(0, -(x4[2], 1))), 760_0_random_IntArithmetic(x2[2]), x4[2])), ≥))



    We simplified constraint (14) using rules (I), (II), (IV), (IDP_BOOLEAN) which results in the following new constraint:

    (15)    (<(0, -(x4[2], 1))=TRUE>(x4[2], 0)=TRUE>(x2[2], 0)=TRUE760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x2[2]), x4[2])≥NonInfC∧760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x2[2]), x4[2])≥COND_760_1_CREATELIST_INVOKEMETHOD(&&(&&(>(x4[2], 0), >(x2[2], 0)), <(0, -(x4[2], 1))), 760_0_random_IntArithmetic(x2[2]), x4[2])∧(UIncreasing(COND_760_1_CREATELIST_INVOKEMETHOD(&&(&&(>(x4[2], 0), >(x2[2], 0)), <(0, -(x4[2], 1))), 760_0_random_IntArithmetic(x2[2]), x4[2])), ≥))



    We simplified constraint (15) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (16)    (x4[2] + [-2] ≥ 0∧x4[2] + [-1] ≥ 0∧x2[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_760_1_CREATELIST_INVOKEMETHOD(&&(&&(>(x4[2], 0), >(x2[2], 0)), <(0, -(x4[2], 1))), 760_0_random_IntArithmetic(x2[2]), x4[2])), ≥)∧[(-1)bni_31 + (-1)Bound*bni_31] + [(2)bni_31]x4[2] ≥ 0∧[(-1)bso_32] ≥ 0)



    We simplified constraint (16) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (17)    (x4[2] + [-2] ≥ 0∧x4[2] + [-1] ≥ 0∧x2[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_760_1_CREATELIST_INVOKEMETHOD(&&(&&(>(x4[2], 0), >(x2[2], 0)), <(0, -(x4[2], 1))), 760_0_random_IntArithmetic(x2[2]), x4[2])), ≥)∧[(-1)bni_31 + (-1)Bound*bni_31] + [(2)bni_31]x4[2] ≥ 0∧[(-1)bso_32] ≥ 0)



    We simplified constraint (17) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (18)    (x4[2] + [-2] ≥ 0∧x4[2] + [-1] ≥ 0∧x2[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_760_1_CREATELIST_INVOKEMETHOD(&&(&&(>(x4[2], 0), >(x2[2], 0)), <(0, -(x4[2], 1))), 760_0_random_IntArithmetic(x2[2]), x4[2])), ≥)∧[(-1)bni_31 + (-1)Bound*bni_31] + [(2)bni_31]x4[2] ≥ 0∧[(-1)bso_32] ≥ 0)



    We simplified constraint (18) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (19)    (x4[2] ≥ 0∧[1] + x4[2] ≥ 0∧x2[2] + [-1] ≥ 0 ⇒ (UIncreasing(COND_760_1_CREATELIST_INVOKEMETHOD(&&(&&(>(x4[2], 0), >(x2[2], 0)), <(0, -(x4[2], 1))), 760_0_random_IntArithmetic(x2[2]), x4[2])), ≥)∧[(3)bni_31 + (-1)Bound*bni_31] + [(2)bni_31]x4[2] ≥ 0∧[(-1)bso_32] ≥ 0)



    We simplified constraint (19) using rule (IDP_SMT_SPLIT) which results in the following new constraint:

    (20)    (x4[2] ≥ 0∧[1] + x4[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_760_1_CREATELIST_INVOKEMETHOD(&&(&&(>(x4[2], 0), >(x2[2], 0)), <(0, -(x4[2], 1))), 760_0_random_IntArithmetic(x2[2]), x4[2])), ≥)∧[(3)bni_31 + (-1)Bound*bni_31] + [(2)bni_31]x4[2] ≥ 0∧[(-1)bso_32] ≥ 0)







For Pair COND_760_1_CREATELIST_INVOKEMETHOD(TRUE, 760_0_random_IntArithmetic(x2), x4) → 745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x5, x6)), x7), -(x4, 1)) the following chains were created:
  • We consider the chain COND_760_1_CREATELIST_INVOKEMETHOD(TRUE, 760_0_random_IntArithmetic(x2[3]), x4[3]) → 745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x5[3], x6[3])), x7[3]), -(x4[3], 1)) which results in the following constraint:

    (21)    (COND_760_1_CREATELIST_INVOKEMETHOD(TRUE, 760_0_random_IntArithmetic(x2[3]), x4[3])≥NonInfC∧COND_760_1_CREATELIST_INVOKEMETHOD(TRUE, 760_0_random_IntArithmetic(x2[3]), x4[3])≥745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x5[3], x6[3])), x7[3]), -(x4[3], 1))∧(UIncreasing(745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x5[3], x6[3])), x7[3]), -(x4[3], 1))), ≥))



    We simplified constraint (21) using rule (POLY_CONSTRAINTS) which results in the following new constraint:

    (22)    ((UIncreasing(745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x5[3], x6[3])), x7[3]), -(x4[3], 1))), ≥)∧[1 + (-1)bso_34] ≥ 0)



    We simplified constraint (22) using rule (IDP_POLY_SIMPLIFY) which results in the following new constraint:

    (23)    ((UIncreasing(745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x5[3], x6[3])), x7[3]), -(x4[3], 1))), ≥)∧[1 + (-1)bso_34] ≥ 0)



    We simplified constraint (23) using rule (POLY_REMOVE_MIN_MAX) which results in the following new constraint:

    (24)    ((UIncreasing(745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x5[3], x6[3])), x7[3]), -(x4[3], 1))), ≥)∧[1 + (-1)bso_34] ≥ 0)



    We simplified constraint (24) using rule (IDP_UNRESTRICTED_VARS) which results in the following new constraint:

    (25)    ((UIncreasing(745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x5[3], x6[3])), x7[3]), -(x4[3], 1))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_34] ≥ 0)







To summarize, we get the following constraints P for the following pairs.
  • 745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0, x1)), x2), x3) → COND_745_1_CREATELIST_INVOKEMETHOD(&&(>=(x2, 1), <(x2, x0)), 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0, x1)), x2), x3)
    • (x2[0] ≥ 0∧x0[0] ≥ 0 ⇒ (UIncreasing(COND_745_1_CREATELIST_INVOKEMETHOD(&&(>=(x2[0], 1), <(x2[0], x0[0])), 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0])), ≥)∧[(2)bni_27] = 0∧0 = 0∧[(-1)Bound*bni_27] ≥ 0∧0 = 0∧0 = 0∧[1 + (-1)bso_28] ≥ 0)

  • COND_745_1_CREATELIST_INVOKEMETHOD(TRUE, 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0, x1)), x2), x3) → 760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x5), x3)
    • ((UIncreasing(760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x5[1]), x3[1])), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[(-1)bso_30] ≥ 0)

  • 760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x2), x4) → COND_760_1_CREATELIST_INVOKEMETHOD(&&(&&(>(x4, 0), >(x2, 0)), <(0, -(x4, 1))), 760_0_random_IntArithmetic(x2), x4)
    • (x4[2] ≥ 0∧[1] + x4[2] ≥ 0∧x2[2] ≥ 0 ⇒ (UIncreasing(COND_760_1_CREATELIST_INVOKEMETHOD(&&(&&(>(x4[2], 0), >(x2[2], 0)), <(0, -(x4[2], 1))), 760_0_random_IntArithmetic(x2[2]), x4[2])), ≥)∧[(3)bni_31 + (-1)Bound*bni_31] + [(2)bni_31]x4[2] ≥ 0∧[(-1)bso_32] ≥ 0)

  • COND_760_1_CREATELIST_INVOKEMETHOD(TRUE, 760_0_random_IntArithmetic(x2), x4) → 745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x5, x6)), x7), -(x4, 1))
    • ((UIncreasing(745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x5[3], x6[3])), x7[3]), -(x4[3], 1))), ≥)∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧0 = 0∧[1 + (-1)bso_34] ≥ 0)




The constraints for P> respective Pbound are constructed from P where we just replace every occurence of "t ≥ s" in P by "t > s" respective "t ≥ c". Here c stands for the fresh constant used for Pbound.
Using the following integer polynomial ordering the resulting constraints can be solved
Polynomial interpretation over integers[POLO]:

POL(TRUE) = 0   
POL(FALSE) = 0   
POL(851_1_createList_InvokeMethod(x1, x2)) = [-1]   
POL(727_0_createList_Return) = [-1]   
POL(0) = 0   
POL(999_0_createList_Return) = [-1]   
POL(923_0_createList_InvokeMethod(x1)) = [-1]   
POL(1051_0_createList_InvokeMethod(x1, x2)) = [-1]   
POL(1292_0_createList_Return) = [-1]   
POL(1005_0_createList_InvokeMethod(x1)) = [-1]   
POL(745_1_CREATELIST_INVOKEMETHOD(x1, x2)) = [2]x2 + [-1]x1   
POL(745_0_random_ArrayAccess(x1, x2)) = [-1] + [-1]x1   
POL(java.lang.Object(x1)) = x1   
POL(ARRAY(x1, x2)) = [-1]   
POL(COND_745_1_CREATELIST_INVOKEMETHOD(x1, x2, x3)) = [-1] + [2]x3 + [-1]x2   
POL(&&(x1, x2)) = [-1]   
POL(>=(x1, x2)) = [-1]   
POL(1) = [1]   
POL(<(x1, x2)) = [-1]   
POL(760_1_CREATELIST_INVOKEMETHOD(x1, x2)) = [-1] + [2]x2   
POL(760_0_random_IntArithmetic(x1)) = x1   
POL(COND_760_1_CREATELIST_INVOKEMETHOD(x1, x2, x3)) = [-1] + [2]x3   
POL(>(x1, x2)) = [-1]   
POL(-(x1, x2)) = x1 + [-1]x2   

The following pairs are in P>:

745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0]) → COND_745_1_CREATELIST_INVOKEMETHOD(&&(>=(x2[0], 1), <(x2[0], x0[0])), 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0])
COND_760_1_CREATELIST_INVOKEMETHOD(TRUE, 760_0_random_IntArithmetic(x2[3]), x4[3]) → 745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x5[3], x6[3])), x7[3]), -(x4[3], 1))

The following pairs are in Pbound:

760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x2[2]), x4[2]) → COND_760_1_CREATELIST_INVOKEMETHOD(&&(&&(>(x4[2], 0), >(x2[2], 0)), <(0, -(x4[2], 1))), 760_0_random_IntArithmetic(x2[2]), x4[2])

The following pairs are in P:

COND_745_1_CREATELIST_INVOKEMETHOD(TRUE, 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[1], x1[1])), x2[1]), x3[1]) → 760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x5[1]), x3[1])
760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x2[2]), x4[2]) → COND_760_1_CREATELIST_INVOKEMETHOD(&&(&&(>(x4[2], 0), >(x2[2], 0)), <(0, -(x4[2], 1))), 760_0_random_IntArithmetic(x2[2]), x4[2])

There are no usable rules.

(29) Complex Obligation (AND)

(30) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Boolean, Integer


The ITRS R consists of the following rules:
851_1_createList_InvokeMethod(727_0_createList_Return, 0) → 999_0_createList_Return
851_1_createList_InvokeMethod(923_0_createList_InvokeMethod(x0), x0) → 1051_0_createList_InvokeMethod(x1, x0)
851_1_createList_InvokeMethod(999_0_createList_Return, x1) → 1292_0_createList_Return
851_1_createList_InvokeMethod(1005_0_createList_InvokeMethod(x0), x0) → 1051_0_createList_InvokeMethod(x1, x0)
851_1_createList_InvokeMethod(1051_0_createList_InvokeMethod(x1, x2), x4) → 1051_0_createList_InvokeMethod(x3, x4)
851_1_createList_InvokeMethod(1292_0_createList_Return, x1) → 1292_0_createList_Return

The integer pair graph contains the following rules and edges:
(1): COND_745_1_CREATELIST_INVOKEMETHOD(TRUE, 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[1], x1[1])), x2[1]), x3[1]) → 760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x5[1]), x3[1])
(2): 760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x2[2]), x4[2]) → COND_760_1_CREATELIST_INVOKEMETHOD(x4[2] > 0 && x2[2] > 0 && 0 < x4[2] - 1, 760_0_random_IntArithmetic(x2[2]), x4[2])

(1) -> (2), if ((760_0_random_IntArithmetic(x5[1]) →* 760_0_random_IntArithmetic(x2[2]))∧(x3[1]* x4[2]))



The set Q consists of the following terms:
851_1_createList_InvokeMethod(727_0_createList_Return, 0)
851_1_createList_InvokeMethod(923_0_createList_InvokeMethod(x0), x0)
851_1_createList_InvokeMethod(999_0_createList_Return, x0)
851_1_createList_InvokeMethod(1005_0_createList_InvokeMethod(x0), x0)
851_1_createList_InvokeMethod(1051_0_createList_InvokeMethod(x0, x1), x2)
851_1_createList_InvokeMethod(1292_0_createList_Return, x0)

(31) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 2 less nodes.

(32) TRUE

(33) Obligation:

IDP problem:
The following function symbols are pre-defined:
!=~Neq: (Integer, Integer) -> Boolean
*~Mul: (Integer, Integer) -> Integer
>=~Ge: (Integer, Integer) -> Boolean
-1~UnaryMinus: (Integer) -> Integer
|~Bwor: (Integer, Integer) -> Integer
/~Div: (Integer, Integer) -> Integer
=~Eq: (Integer, Integer) -> Boolean
~Bwxor: (Integer, Integer) -> Integer
||~Lor: (Boolean, Boolean) -> Boolean
!~Lnot: (Boolean) -> Boolean
<~Lt: (Integer, Integer) -> Boolean
-~Sub: (Integer, Integer) -> Integer
<=~Le: (Integer, Integer) -> Boolean
>~Gt: (Integer, Integer) -> Boolean
~~Bwnot: (Integer) -> Integer
%~Mod: (Integer, Integer) -> Integer
&~Bwand: (Integer, Integer) -> Integer
+~Add: (Integer, Integer) -> Integer
&&~Land: (Boolean, Boolean) -> Boolean


The following domains are used:

Boolean, Integer


The ITRS R consists of the following rules:
851_1_createList_InvokeMethod(727_0_createList_Return, 0) → 999_0_createList_Return
851_1_createList_InvokeMethod(923_0_createList_InvokeMethod(x0), x0) → 1051_0_createList_InvokeMethod(x1, x0)
851_1_createList_InvokeMethod(999_0_createList_Return, x1) → 1292_0_createList_Return
851_1_createList_InvokeMethod(1005_0_createList_InvokeMethod(x0), x0) → 1051_0_createList_InvokeMethod(x1, x0)
851_1_createList_InvokeMethod(1051_0_createList_InvokeMethod(x1, x2), x4) → 1051_0_createList_InvokeMethod(x3, x4)
851_1_createList_InvokeMethod(1292_0_createList_Return, x1) → 1292_0_createList_Return

The integer pair graph contains the following rules and edges:
(0): 745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0]) → COND_745_1_CREATELIST_INVOKEMETHOD(x2[0] >= 1 && x2[0] < x0[0], 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]), x3[0])
(1): COND_745_1_CREATELIST_INVOKEMETHOD(TRUE, 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[1], x1[1])), x2[1]), x3[1]) → 760_1_CREATELIST_INVOKEMETHOD(760_0_random_IntArithmetic(x5[1]), x3[1])
(3): COND_760_1_CREATELIST_INVOKEMETHOD(TRUE, 760_0_random_IntArithmetic(x2[3]), x4[3]) → 745_1_CREATELIST_INVOKEMETHOD(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x5[3], x6[3])), x7[3]), x4[3] - 1)

(3) -> (0), if ((745_0_random_ArrayAccess(java.lang.Object(ARRAY(x5[3], x6[3])), x7[3]) →* 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]))∧(x4[3] - 1* x3[0]))


(0) -> (1), if ((x2[0] >= 1 && x2[0] < x0[0]* TRUE)∧(745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[0], x1[0])), x2[0]) →* 745_0_random_ArrayAccess(java.lang.Object(ARRAY(x0[1], x1[1])), x2[1]))∧(x3[0]* x3[1]))



The set Q consists of the following terms:
851_1_createList_InvokeMethod(727_0_createList_Return, 0)
851_1_createList_InvokeMethod(923_0_createList_InvokeMethod(x0), x0)
851_1_createList_InvokeMethod(999_0_createList_Return, x0)
851_1_createList_InvokeMethod(1005_0_createList_InvokeMethod(x0), x0)
851_1_createList_InvokeMethod(1051_0_createList_InvokeMethod(x0, x1), x2)
851_1_createList_InvokeMethod(1292_0_createList_Return, x0)

(34) IDependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 3 less nodes.

(35) TRUE